/*
 * PajaroVerde.cpp
 *
 *  Created on: 16/10/2012
 *      Author: Ignacio Galvez
 */
#include <cmath>
#include "PajaroVerde.h"
#include "Daniable.h"
#include <cmath>
#include <iostream>
PajaroVerde::PajaroVerde(double anguloDeCaida,double normaVelocidadInicial,
	double x, double y, double tiempoInicial):
		Pajaro(anguloDeCaida, normaVelocidadInicial, VIDA_PAJARO_VERDE, x, y, 
			tiempoInicial) {
	std::string path("dibujos/pajaro3.png");
	setImagePath(path);
}

double PajaroVerde::VIDA_PAJARO_VERDE = 1;

double PajaroVerde::FACTOR = sqrt(0.20);


void PajaroVerde::daniar(Daniable* daniable) {
	daniable->serDaniadoPorPajaroVerde();
}

void PajaroVerde::rebotar(double ticks) {
	const double G = 10;
	double anguloRebote;
	double tangenteAnguloRebote;
	std::cout << "rebotando pajaroVerde" << std::endl;
	double vx = getNormaVelocidadInicial() * cos(getAnguloDeCaida());
	double vy = getNormaVelocidadInicial() * sin(getAnguloDeCaida()) - G * 
	(ticks - getTiempoInicial());
	double vx2 = pow(vx, 2);
	double vy2 = pow(vy, 2);
	double V02 = vx2 + vy2;
	double V0 = sqrt(V02);
	tangenteAnguloRebote = (fabs(vy)/vx);
	anguloRebote = atan(tangenteAnguloRebote);
	if (anguloRebote < 0) anguloRebote = anguloRebote + M_PI;
	setXinicial(getPosicionX());
	setYinicial(getPosicionY());
	setPosicionY(getPosicionY());
	setTiempoInicial(ticks);
	//setPosicionY(getPosicionY() + epsilon);
	setAnguloCaida(anguloRebote);
	modificarVelocidadInicial(FACTOR, V0);
}

std::string & PajaroVerde::getImagePath() {
	return  imagePath;
}
void  PajaroVerde::setImagePath(std::string &path) {
	imagePath = path;
}

PajaroVerde::~PajaroVerde() {}
